package gaej.example.contact.client;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class MuziekstukDelegate {
    private MusicServiceAsync musicService = GWT.create(MusicService.class);
    MuziekstukGUI gui;
    
    void listMuziekstukken() {
    	
    	// verzamel de aanwezige componisten voor de gui
    	musicService.listComponisten(new AsyncCallback<List<Componist>> () {
                    public void onFailure(Throwable caught) {
                        //gui.service_eventListMuziekstukkenFailed(caught);
                    	// lege lijst
                    	List<Componist> result = null;
                    	gui.service_componistenListRetrievedFromService(result);
                    }
        
                    public void onSuccess(List<Componist> result) {
                        gui.service_componistenListRetrievedFromService(result);
                    }
        }//end of inner class
        );//end of listMuziekstuks method call.
    	
    	// verzamel de aanwezige muziekstukken
        musicService.listMuziekstukken(new AsyncCallback<List<Muziekstuk>> () {
                    public void onFailure(Throwable caught) {
                        gui.service_eventListMuziekstukBezettingFailed(caught);
                    }
        
                    public void onSuccess(List<Muziekstuk> result) {
                        gui.service_eventListRetrievedFromService(result);
                        
                    }
        }//end of inner class
        );//end of listMuziekstuks method call.
    }
    
    void listMuziekstukBezetting(final Muziekstuk muziekstuk) {
    	musicService.listMuziekstukBezetting(muziekstuk, new AsyncCallback<List<Bezetting>> () {
            public void onFailure(Throwable caught) {
                gui.service_eventAddMuziekstukFailed(caught);
            }

            public void onSuccess(List<Bezetting> result) {
                gui.service_bezettingListRetrievedFromService(result);
            }
        }//end of inner class
        );//end of addMuziekstuk method call.        
    }


    
    void addMuziekstuk(final Muziekstuk muziekstuk) {
        musicService.addMuziekstuk(muziekstuk, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventAddMuziekstukFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventAddMuziekstukSuccessful();
            }
        }//end of inner class
        );//end of addMuziekstuk method call.        
    }

    void updateMuziekstuk(final Muziekstuk muziekstuk) {
        musicService.updateMuziekstuk(muziekstuk, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventUpdateMuziekstukFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventUpdateSuccessful();
            }
        }//end of inner class
        );//end of updateMuziekstuk method call.        
    }

    void removeMuziekstuk(final Muziekstuk muziekstuk) {
        musicService.removeMuziekstuk(muziekstuk, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventRemoveMuziekstukFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventRemoveMuziekstukSuccessful();
            }
        }//end of inner class
        );//end of updateMuziekstuk method call.        
    }
    
}
